package concoursbelote;

import java.util.ArrayList;
import java.util.Random;

/**
 * Permet d'appeler les méthodes de génération automatique de bar, de serveurs ou de cllient.
 * @author Guillaume
 */
public class GenerationAutomatique 
{
	protected static ArrayList<Patronne> patronnePreEnregistre = new ArrayList<Patronne>();
	protected static ArrayList<Barman> barmanPreEnregistre = new ArrayList<Barman>();
	protected static ArrayList<Serveur> serveurPreEnregistre = new ArrayList<Serveur>();
	protected static ArrayList<Client> clientPreEnregistre = new ArrayList<Client>();
	
	
	//*********************************************************
	//			INITIALISATION PATRONNE
	//*********************************************************
	static Patronne arlette = new Patronne("Arlette", "Lette",  100, 0, "Bonjour", "blanc", "rosé", 0, 50, 0, "collier");
	
	
	//*********************************************************
	//			INITIALISATION BARMAN
	//*********************************************************
	static Barman guillaume = new Barman("Guillaume", "GGui", 50, 0, "Waza");
	static Barman pierreAnne = new Barman("Pierre-Anne", "PA", 50, 0, "Ptn");
	static Barman francois = new Barman("François", "Boiz", 50, 0, "Holalala");
	static Barman eric = new Barman("Eric", "Tonneau", 50, 0, "Hein?");
	
	//*********************************************************
	//			INITIALISATION SERVEUR
	//*********************************************************
	static ServeurHomme theo = new ServeurHomme("Theo", "Ice", 50, 0, "Ohdihooow", 38);
	static ServeurHomme shehu = new ServeurHomme("Shehu", "Max", 50, 0, "SiSi", 40);
	static ServeurFemme ele = new ServeurFemme("Eléonore", "Yume", 50,0, "Gné", 70, false);
	
	//*********************************************************
	//			INITIALISATION CLIENT
	//*********************************************************
	static ClientHomme thib = new ClientHomme("Thibault", "Thib", 50, 0, "Yaouuu", "bière", "rouge", 0, 50, 0, "noir", false);
	static ClientHomme jo = new ClientHomme("Jonathan", "jo", 50,0, "Salut", "eau", "whisky", 0, 50, 0, "gris", false);
	static ClientHomme loic = new ClientHomme("Loïc", "Lolo", 50, 0, "Price", "champagne", "rouge", 0, 50, 0, "bleu", false);
	static ClientFemme corinne = new ClientFemme("Corinne", "Mémé", 50, 0, "Eurêka", "coca", "eau", 0, 50, 0, "boucle");
	
	
	//*********************************************************
	//			METHODS
	//*********************************************************
	
	/**
	 * Permet d'initialiser les listes pré-enregistrés pour la génération automatique
	 * @author Guillaume
	 */
	public static void initialisationListe()
	{
		//initialisation liste patronne
		GenerationAutomatique.patronnePreEnregistre.add(arlette);
		
		//initialisation liste barman
		GenerationAutomatique.barmanPreEnregistre.add(guillaume);
		GenerationAutomatique.barmanPreEnregistre.add(pierreAnne);
		GenerationAutomatique.barmanPreEnregistre.add(francois);
		GenerationAutomatique.barmanPreEnregistre.add(eric);
		
		//initialisation liste serveur
		GenerationAutomatique.serveurPreEnregistre.add(theo);
		GenerationAutomatique.serveurPreEnregistre.add(shehu);
		GenerationAutomatique.serveurPreEnregistre.add(ele);
		
		//initialisation liste client
		GenerationAutomatique.clientPreEnregistre.add(thib);
		GenerationAutomatique.clientPreEnregistre.add(jo);
		GenerationAutomatique.clientPreEnregistre.add(loic);
		GenerationAutomatique.clientPreEnregistre.add(corinne);
	}
	
	/**
	 * Permet de générer automatiquement un bar
	 * @author Guillaume
	 */
	public static void generationBar()
	{
		int index = -1;
		Random rnd = new Random();
		try
		{
			 index = rnd.nextInt(GenerationAutomatique.patronnePreEnregistre.size());
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("Il n'y a plus de bar en réserve pour la génération automatique");
			Main.afficherMenu();
		}
		String nomBar = new String("Chez " + GenerationAutomatique.patronnePreEnregistre.get(index).getPrenom());
		Bar barAuto = new Bar(nomBar, 2, 8, 500, GenerationAutomatique.patronnePreEnregistre.get(index));
		GenerationAutomatique.patronnePreEnregistre.remove(index);
		try
		{
			 index = rnd.nextInt(GenerationAutomatique.barmanPreEnregistre.size());
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("Il n'y a plus de bar en réserve pour la génération automatique");
			Main.afficherMenu();
		}
		barAuto = new Bar(barAuto.getNom(), barAuto.getNbrTables(), barAuto.getNbrChaises(), barAuto.getCaisse(), barAuto.getPatronne(), GenerationAutomatique.barmanPreEnregistre.get(index),
				barAuto.clients, barAuto.clientsBannis, barAuto.serveur, barAuto.mesBoissons, barAuto.mesFournisseurs);
		GenerationAutomatique.barmanPreEnregistre.remove(index);
		Main.repertoireBar.add(barAuto);
		System.out.println("Le bar " + barAuto.getNom() + " vient d'être créé. La patronne est " + barAuto.getPatronne().getPrenom() + " et le barman est " + barAuto.getBarman().getPrenom());
		Main.afficherMenu();
	}
	
	/**
	 * Permet de générer automatiquement un ou des serveurs
	 * @author Shehu
	 */
	public static void generationServeur()
	{
		int index = -1;
		Random rnd = new Random();	
		Erreur.existenceBar();
		try
		{
			 index = rnd.nextInt(GenerationAutomatique.serveurPreEnregistre.size());
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("Il n'y a plus de serveur en réserve pour la génération automatique");
			Main.menuAdministration();
		}
		Administration.currentBar.serveur.add(GenerationAutomatique.serveurPreEnregistre.get(index));
		System.out.println("Un serveur vient d'être embauché " + Administration.currentBar.getNom() + ". Il s'agit de " + GenerationAutomatique.serveurPreEnregistre.get(index).getPrenom());
		GenerationAutomatique.serveurPreEnregistre.remove(index);
		Main.menuAdministration();	
	}
	
	/**
	 * Permet de générer automatiquement un ou des clients
	 * @author Guillaume
	 */
	public static void generationClient()
	{
		int index = -1;
		Random rnd = new Random();	
		Erreur.existenceServeur();
		try
		{
			 index = rnd.nextInt(GenerationAutomatique.clientPreEnregistre.size());
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("Il n'y a plus de client en réserve pour la génération automatique");
			Main.menuAdministration();
		}
		Administration.currentBar.clients.add(GenerationAutomatique.clientPreEnregistre.get(index));
		System.out.println("Vous avez autorisé " + GenerationAutomatique.clientPreEnregistre.get(index).getPrenom() + " a entré " + Administration.currentBar.getNom());
		GenerationAutomatique.clientPreEnregistre.remove(index);
		Main.menuAdministration();
	}
}
